home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / mus / play / multiplsr.lha / include / CallList.h next >
C/C++ Source or Header  |  1991-11-02  |  2KB  |  43 lines

  1. /* CallList - Module to manipulate lists of functions to call - Copyright 1991 Bryan Ford */
  2. #ifndef CALLLIST_H
  3. #define CALLLIST_H
  4.  
  5. #ifndef EXEC_NODES_H
  6. #include <exec/nodes.h>
  7. #endif
  8.  
  9. #ifndef EXEC_LISTS_H
  10. #include <exec/lists.h>
  11. #endif
  12.  
  13. /* One of these structures "remembers" a function to be called later. */
  14. struct CallNode
  15.   {
  16.     struct Node Node;                   /* Standard Exec node */
  17.     LONG (*CallFunction)(LONG GlobalData,LONG LocalData); /* What to call */
  18.     LONG LocalData;                     /* What to call it with */
  19.   };
  20. #define CNT_INLIST      NT_USER         /* ln_Type set to this when node is in a CallList */
  21.  
  22. #define DefCallNode(name,func,data,pri) struct CallNode name = {{0,0,0,pri},func,data}
  23.  
  24. /* We don't need any fancy structures here. */
  25. #define CallList        MinList
  26.  
  27. /* Initializing a CallList is also very simple. */
  28. #define InitCallList(calllistptr)       NewList((struct List*)(calllistptr))
  29.  
  30. /* Call() and CallRem() simply bounce to the more powerful versions. */
  31. #define Call(CallList,GlobalData)       CallExt(CallList,GlobalData,NULL)
  32. #define CallRem(CallList,GlobalData)    CallRemExt(CallList,GlobalData,NULL)
  33.  
  34. /* Function prototypes */
  35. /* (See CallList.c for details on these functions.) */
  36. void AddCallNode(struct CallList *l,struct CallNode *d);
  37. void RemCallNode(struct CallNode *d);
  38. long CallExt(struct CallList *l,long GlobalData,
  39.   long (*AfterFunc)(struct CallNode *Node,long RetCode,long GlobalData));
  40. long CallRemExt(struct CallList *l,long GlobalData,
  41.   long (*AfterFunc)(struct CallNode *Node,long RetCode,long GlobalData));
  42.  
  43. #endif